Methods and systems for improving designs of electronic mail message templates

ABSTRACT

A method for improving designs of electronic message templates based on identified variations includes importing, by a capture engine executing on a first computing device, an email template into an email client. The method includes rendering the email template in the email client. The method includes generating a screen shot of a portion of the rendered email template. The method includes comparing, by a comparison engine, the generated screen shot with an archived screen shot of the rendered portion. The method includes determining that a first level of variation between the generated screen shot and the archived screen shot exceeds a first threshold level of variation. The method includes transmitting, by an alert engine executed by the first computing device, to a second computing device, a notification of the first level of variation and a recommendation to modify the email template to minimize the first level of variation.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.16/814,194, filed on Mar. 10, 2020, entitled, “Methods and Systems forImproving Designs of Electronic Mail Message Templates,” whichapplication claims priority from U.S. Provisional Patent Application No.62/857,892, filed on Jun. 6, 2019, entitled, “Methods and Systems forImproving Designs of Electronic Mail Message Templates” each of which ishereby incorporated by reference.

BACKGROUND

The disclosure relates to improving electronic mail (email) messagetemplates. More particularly, the methods and systems described hereinrelate to functionality for monitoring for and identifying variations inuser interface designs and making recommendations for improving designsof electronic message templates based on identified variations.

Conventional systems allow users to generate templates that can beautomatically populated with data and sent as emails to recipientsviewing the emails through a variety of email applications. However,many email applications are hosted by third parties who can and dochange how their systems render email messages without notice to messagesenders or recipients. There is a need for functionality that determineswhether such a change has occurred and inform email senders that theirtemplates may no longer render messages as expected.

BRIEF SUMMARY

In one aspect, a method for monitoring for and identifying variations inuser interface designs and making recommendations for improving designsof electronic message templates based on identified variations includesimporting, by a capture engine executing on a first computing device, anemail template into an email client. The method includes rendering, bythe capture engine, the email template in the email client. The methodincludes generating, by the capture engine, a screen shot of a portionof the rendered email template. The method includes comparing, by acomparison engine executed by the first computing device, the generatedscreen shot with an archived screen shot of the portion of the renderedemail template. The method includes determining, by the comparisonengine, that a first level of variation between the generated screenshot and the archived screen shot exceeds a first threshold level ofvariation. The method includes transmitting, by an alert engine executedby the first computing device, to a second computing device, anotification of the first level of variation and a recommendation tomodify the email template to minimize the first level of variation.

BRIEF DESCRIPTION OF THE DRAWINGS

The foregoing and other objects, aspects, features, and advantages ofthe disclosure will become more apparent and better understood byreferring to the following description taken in conjunction with theaccompanying drawings, in which:

FIG. 1A is a block diagram depicting an embodiment of a system forimproving designs of electronic mail message templates;

FIG. 1B is a block diagram depicting one embodiment of an emailtemplate;

FIG. 1C is a block diagram depicting one embodiment of a user interfacein a system for improving designs of electronic mail message templates;

FIG. 2 is a flow diagram depicting an embodiment of a method forimproving designs of electronic mail message templates;

FIG. 3 is a flow diagram depicting an embodiment of a method forimproving designs of electronic mail message templates; and

FIGS. 4A-4C are block diagrams depicting embodiments of computers usefulin connection with the methods and systems described herein.

DETAILED DESCRIPTION

The present disclosure relates to methods and systems for improvingdesigns of electronic mail message templates.

Referring now to FIG. 1A, a block diagram depicts one embodiment of asystem 100 for monitoring for and identifying variations in userinterface designs and making recommendations for improving designs ofelectronic mail (email) message templates based on identifiedvariations. The system 100 includes a first computing device 106, asecond computing device 102, a capture engine 108, a comparison engineno, an alert engine 112, comparison engines 114 a-n (including a screenshot comparison engine 114 a and a rendered HyperText Markup Language(HTML) comparison engine 114 b), and a database 116.

The email message template may be an HTML document. The email messagetemplate may be a document designed by a user of the system 100. Theemail message template may be a document provided by the system 100 forusers. Email message templates, as will be understood by those ofordinary skill in the art, may be used to send core messages out to aplurality of users with minimal customization instead of manuallygenerating and sending individual messages to individual users (e.g.,templates providing welcome messages, password resets, etc.). Referringahead to FIG. 1B, a block diagram depicts one embodiment of an emailtemplate. As shown in FIG. 1B, the email template may be rendered in anemail client and may have an associated HTML document; for example, theHTML document may provide instructions for rendering the email templatein the email client.

Referring back to FIG. 1A, some embodiments, the capture engine 108 is asoftware program. In other embodiments, the capture engine 108 is ahardware module. The capture engine 108 may include functionality forexecuting scripts. The capture engine 108 may include functionality forgenerating and sending email messages. The capture engine 108 mayinclude functionality for executing an email application, opening anemail message within the email application, and generating a screen shotof the opened email message (e.g., generating a digital imagerepresenting a rendering of the email message by the email application).

In some embodiments, the comparison engine no is a software program. Inother embodiments, the comparison engine no is a hardware module. Thecomparison engine 110 may execute on the first computing device. Thecomparison engine 110 may include functionality for comparing thecontents of digital image files. The comparison engine 110 may includefunctionality for comparing two or more text documents including, by wayof example, two or more documents written in HyperText Markup Language(HTML).

In some embodiments, the comparison engine 110 includes a plurality ofengine components, each of which provides functionality for executingdifferent types of comparisons. As shown in FIG. 1, the comparisonengine 110 includes a screen shot comparison engine 114 a and a renderedHTML comparison engine 114 b.

In some embodiments, the screen shot comparison engine 114 a is asoftware program. In other embodiments, the screen shot comparisonengine 114 a is a hardware module. The screen shot comparison engine 114a may include functionality for comparing the contents of digital imagefiles.

In some embodiments, the rendered HTML comparison engine 114 b is asoftware program. In other embodiments, the rendered HTML comparisonengine 114 b is a hardware module. The rendered HTML comparison engine114 b may include functionality for comparing two or more HTML documents(e.g., two or more text documents including HTML code).

In some embodiments, the alert engine 112 is a software program. Inother embodiments, the alert engine 112 is a hardware module. The alertengine 112 may execute on the first computing device. The alert engine112 may include one or more rules for use in generating and sendingnotifications. The alert engine 112 may include functionality forextracting user contact information associated with an email template.The alert engine 112 may include functionality for generating andsending a message to a creator of an email template using extracted usercontact information.

In some embodiments, the database 116 is an ODBC-compliant database. Forexample, the database 116 may be provided as an ORACLE database,manufactured by Oracle Corporation of Redwood Shores, Calif. In otherembodiments, the database 116 can be a Microsoft ACCESS database or aMicrosoft SQL server database, manufactured by Microsoft Corporation ofRedmond, Wash. In other embodiments, the database 116 can be a SQLitedatabase distributed by Hwaci of Charlotte, N.C., or a PostgreSQLdatabase distributed by The PostgreSQL Global Development Group. Instill other embodiments, the database 116 may be a custom-designeddatabase based on an open source database, such as the MYSQL family offreely available database products distributed by MySQL AB Corporationof Uppsala, Sweden. In other embodiments, examples of databases include,without limitation, structured storage (e.g., NoSQL-type databases andBigTable databases), HBase databases distributed by The Apache SoftwareFoundation of Forest Hill, Md., MongoDB databases distributed by 10Gen,Inc., of New York, N.Y., an AWS DynamoDB distributed by Amazon WebServices and Cassandra databases distributed by The Apache SoftwareFoundation of Forest Hill, Md. In further embodiments, the database 116may be any form or type of database.

Referring now to FIG. 2, a flow diagram depicts one embodiment of amethod 200 for monitoring for and identifying variations in userinterface designs and making recommendations for improving designs ofemail message templates based on identified variations. In briefoverview, the method 200 includes importing, by a capture engineexecuting on a first computing device, an email template into an emailclient (202). The method 200 includes rendering, by the capture engine,the email template in the email client (204). The method 200 generating,by the capture engine, a screen shot of a portion of the rendered emailtemplate (206). The method 200 includes comparing, by a comparisonengine executed by the first computing device, the generated screen shotwith an archived screen shot of the rendered portion (208). The method200 includes determining, by the comparison engine, that a first levelof variation between the generated screen shot and the archived screenshot exceeds a first threshold level of variation (210). The method 200includes transmitting, by an alert engine executed by the firstcomputing device, to a second computing device, a notification of thefirst level of variation and a recommendation to modify the emailtemplate to minimize the first level of variation (212).

In some embodiments, prior to execution of the method 200, the system100 receives a request for monitoring for variations in rendering ofemail templates by one or more email rendering clients. In one of theseembodiments, the method 200 includes receiving, by the first computingdevice 106, from a second computing device 102, before importing theemail template, a request from the second computing device 102 tomonitor for variations in rendering of the email template by at leastone email client.

Referring now to FIG. 2 in greater detail and in connection with FIGS.1A-B, the method 200 includes importing, by a capture engine executingon a first computing device, an email template into an email client(202). In some embodiments, a designer of the email template emails theemail template to an email address (e.g., a dedicated email addressassigned to the designer) and the capture engine 108 access an emailaccount of the email address and imports received email templates (e.g.,by executing a script to log into the email account upon receiving anotification that a new email has been received and then downloading acopy of the email template). In other embodiments, a designer of theemail template designs the email template within a user interfaceprovided by the system 100 (not shown) and the user interface providesfunctionality for storing the email template at a location accessible tothe capture engine 108; the capture engine 108 may poll the location todetermine whether a new email template is available or register fornotifications when new email templates become available. In still otherembodiments, a designer of the email template may access a userinterface provided by the system 100 (not shown) to provide a copy ofthe email template directly to the capture engine 108.

In some embodiments, and as shown in FIG. 1C, the method 200 includesdisplaying a user interface with which a user may select one or moreemail clients with which the system 100 should monitor for designvariances.

Referring back to FIG. 2, the method 200 includes rendering, by thecapture engine, the email template in the email client (204). In someembodiments, the capture engine 108 automatically executes at least onescript to send an email message to a test email account, launch theemail client being monitored for variances, find the sent email message,and open the email message. In some embodiments, the at least one scriptis a run-time software component; such a component may be invoked basedupon a preference associated with an email template (e.g., whether auser creating or maintaining the email template requested execution ofthe methods described herein and whether the user identified one or moreemail clients with which the system should test the email template).

The method 200 generating, by the capture engine, a screen shot of aportion of the rendered email template (206). In some embodiments, a“screen shot” may be referred to as “an email capture.” A “screen shotof a portion of the rendered email template” or “an email capture” mayrefer to a static image file generated by a computer displaying an emailrendered by an email client on a particular operating system and device.As will be understood by those of ordinary skill in the art, a screenshot is a static image file generated by a computer and containing arepresentation of what is being rendered by the computer on a display atthe time the file is generated. In some embodiments, the capture engine108 executes a script that executes a command to generate a screen shotof at least a portion of the email message as rendered in the emailclient.

In some embodiments, the capture engine 108 generates a screen shot ofthe entire rendered portion of the email template. In other embodiment,the capture engine 108 generates a screen shot of a portion of therendered portion of the email template. In still other embodiments, thecapture engine 108 generates a screen shot of a cross section of therendered email template.

In some embodiments, the capture engine 108 modifies a screen shot ofthe rendered portion of the email template. For example, the captureengine 108 may execute functionality for cropping a screen shot toremove whitespace on the edge of the image. As another example, thecapture engine 108 execute functionality for cropping a screen shot toreduce the size of the image; for example, by identifying a minimumbounding rectangle and cropping to the size of that rectangle.

The method 200 includes comparing, by a comparison engine executed bythe first computing device, the generated screen shot with an archivedscreen shot of the rendered portion (208). The archived screen shot maybe referred to as a control version of the email template. In oneembodiment, the comparison engine 110 retrieves the control version ofthe email template from the database 116. In another embodiment, thecapture engine 108 retrieves the control version of the email templatefrom the database 116 and transmits the retrieved control version to thecomparison engine 110.

In one embodiment, the comparison engine 110 compares the entiregenerated screen shot with the entire control version of the emailtemplate. In another embodiment, the comparison engine compares a subsetof a plurality of pixels in the generated screen shot with a subset of aplurality of pixels the archived screen shot.

In one embodiment, the comparison engine 110 executes a binarycomparison of the two screen shots. In another embodiment, thecomparison engine 110 executes a size comparison of the two screenshots. In still another embodiment, the comparison engine 110 executesan RBG projection and relative luminance comparison of the two screenshots. In yet another embodiment, the comparison engine 110 performs apixel-by-pixel comparison of the two images. In a further embodiment,the comparison engine 110 identifies a region of interest in thegenerated screen shot; identifies a corresponding region of interest inthe archived screen shot; and compares the region of interest in thegenerated screen shot with the corresponding region of interest in thearchived screen shot. In some embodiments, the comparison engine 110selects one technique for determining the level of variation between thetwo screen shots. In other embodiments, the comparison engine 110applies all available techniques for determining the level of variationbetween the two screen shots.

The method 200 includes determining, by the comparison engine, that afirst level of variation between the generated screen shot and thearchived screen shot exceeds a first threshold level of variation (210).In one embodiment, the comparison engine 110 determines the level ofvariation based upon the comparing of the generated screen shot with thearchived screen shot. The comparison engine 110 may receive a level ofvariation as a result of performing a comparison between the generatedscreen shot and the archived screen shot. The comparison engine 110 maydetermine that the level of variation exceeds the first threshold levelof variation. A user of the system 100 may specify the level ofvariation acceptable for a particular email template; for example, thesystem 100 may include a user interface (not shown) with which the userof the system 100 may specify the level of variation (e.g., by selectingon pre-defined options or entering a value for the level of variation).

In some embodiments, the comparison engine 110 determines that the levelof variation exceeds the threshold by an amount that is associated withan instruction to transmit an alert or other notification to the secondcomputing device 102. In one of these embodiments, the comparison engine110 transmits, to the alert engine 112, an instruction to generate andtransmit the notification.

The method 200 includes transmitting, by an alert engine executed by thefirst computing device, to a second computing device, a notification ofthe first level of variation and a recommendation to modify the emailtemplate to minimize the first level of variation (212). In someembodiments, the alert engine 112 transmits a notification that a userof the second computing device 102 should access an account with whichthe email template was designed to view a comparison between thearchived screen shot and the generated screen shot.

In some embodiments, the alert engine 112 transmits the notificationduring the design of the email template. The system 100 may receive anotification from a user designing the email template that the user isto be alerted to levels of variation in the rendering of the emailtemplate during the process of designing the email template. Therefore,the capture engine 108 may import incomplete or draft versions of theemail template during the process of designing the email template andthe method 200 may execute with renderings of the incomplete or draftversions of the email template as described above. The alert engine 112may then provide email notifications or in-app messages or in-app alertsto the user during the design process (e.g., at each point in time atwhich the user has requested execution of the method 200 or at eachpoint in time at which the email template is modified).

In some embodiments, the comparison engine no stores, in a log, anidentification of the level of variance. In other embodiments, thecomparison engine no stores, in a log, an identification of thetransmitted notification. The comparison engine 110 may store, in a log,an identification of the results of the comparison.

The method 200 may include execution of a different comparison engine,such as in embodiments in which the comparison engine no includesmultiple different engines 114 a-n, each of which may be capable ofcomparing different aspects of the email template. In one embodiment,the comparison engine 110 includes functionality for determining whetheran HTML document associated with (and, in some instances, underlying)the email template has been changed by the email client and, if so,whether the changes exceed a second threshold level of variance.Therefore, the method 200 may include rendering, by the capture engine,in the email client, an HTML document associated with the emailtemplate. The method 200 may include comparing the rendered HTMLdocument with an archived HTML document associated with the emailtemplate. The method 200 may include determining, by the comparisonengine 110 (and, in particular, by a second comparison engine 114 b),that a second level of variation between the rendered HTML document andthe archived HTML document exceeds a second threshold level ofvariation. The method 200 may include transmitting, by the alert engine,to the second computing device, a second notification of the level ofvariation and a second recommendation to modify the email template tominimize the level of variation. The method 200 may includetransmitting, by the alert engine 112, an indication of the section(s)of the HTML document that contributed to the second level of variance.Therefore, the method 200 may include programmatically entering an emailtemplate into one or more test email accounts in one or more emailclients; executing a series of automation scripts to log in to the emailaccounts, open the email, and screen shot the email as it is rendered ineach of the email clients; programmatically obtaining the rendered HTML(because each email client may alter the original HTML at render time,this rendered HTML may vary, even slightly, from the original HTML); andstoring copies of the screen shots and rendered HTML in a data store.

In embodiments in which the method 200 includes determining multiplelevels of variance (e.g., a first level of variance for variationsbetween screen shots and a second level of variance for variationsbetween HTML documents), the method 200 may include transmitting anotification for each level of variance determined to exceed anassociated threshold level of variance—that is, if the screen shotsdiffer by an amount that exceeds a first threshold and the HTMLdocuments differ by an amount that exceeds a second threshold, themethod 200 may send two notifications, one for each threshold exceeded.Alternatively, in other embodiments, the method 200 may includecombining a first level of variance and a second level of variance anddetermining whether the combined level of variance exceeds a thirdthreshold level of variance.

In some embodiments, the comparison engine no includes only the screenshot comparison engine 114 a and not the other comparison engines 114b-n. In other embodiments, the comparison engine no includes only therendered HTML comparison engine 114 b and not the other comparisonengines 114 a or 114 n. In further embodiments, the comparison engine noincludes only the screen shot comparison engine 114 a and the renderedHTML comparison engine 114 b and not any other comparison engines 114 n.

Referring now to FIG. 3, a flow diagram depicts one embodiment of amethod 300 for monitoring for and identifying variations in userinterface designs and making recommendations for improving designs ofelectronic message templates based on identified variations. In briefoverview, the method 300 includes importing, by a capture engineexecuting on a first computing device, an email template into an emailclient (302). The method 300 includes rendering, by the capture engine,a HyperText Markup Language (HTML) document associated with the emailtemplate in the email client (304). The method 30 o includes comparing,by a comparison engine executed by the first computing device, therendered HTML document with an archived HTML document associated withthe email template (306). The method 300 includes determining, by thecomparison engine, that a first level of variation between the renderedHTML document and the archived HTML document exceeds a first thresholdlevel of variation (308). The method 300 includes transmitting, by analert engine executed by the first computing device, to a secondcomputing device, a notification of the first level of variation and arecommendation to modify the email template to minimize the first levelof variation (310). As will be understood by those of ordinary skill inthe art, the method 300 may include the steps of method 200, thusincluding rendering, by the capture engine, the email template in theemail client; generating, by the capture engine, a screen shot of aportion of the rendered email template; comparing, by a secondcomparison engine executed by the first computing device (e.g., thecomparison engine 114 a), the generated screen shot with an archivedscreen shot of the rendered portion; determining, by the comparisonengine, that a second level of variation between the generated screenshot and the archived screen shot exceeds a second threshold level ofvariation; and transmitting, by the alert engine, to the secondcomputing device, a notification of the second level of variation and asecond recommendation to modify the email template to minimize thesecond level of variation.

Although described above as a level of variation, one of ordinary skillin the art will understand that the comparison engine no may executefunctionality to determine a level of similarity between the generatedscreen shot and the archived screen shot and determine that the level ofsimilarity fails to meet a threshold level of similarity.

In some embodiments, the comparison engine no stores the generatedscreen shot in the database 116. In one of these embodiments, thecomparison engine 110 replaces the archived screen shot with thegenerated screen shot and the generated screen shot will be used as thecontrol screen shot in a subsequent comparison process.

The system 100 may repeat the execution of the method 200 with each of aplurality of email clients. The system 100 may repeat the execution ofthe method 200 at configurable time intervals.

It should be understood that the systems described above may providemultiple ones of any or each of those components and these componentsmay be provided on either a standalone machine or, in some embodiments,on multiple machines in a distributed system. The phrases ‘in oneembodiment,’ ‘in another embodiment,’ and the like, generally mean thatthe particular feature, structure, step, or characteristic following thephrase is included in at least one embodiment of the present disclosureand may be included in more than one embodiment of the presentdisclosure, possibly in combination with other embodiments of thepresent disclosure. Such phrases may, but do not necessarily, refer tothe same embodiment.

The systems and methods described above may be implemented as a method,apparatus, or article of manufacture using programming and/orengineering techniques to produce software, firmware, hardware, or anycombination thereof. The techniques described above may be implementedin one or more computer programs executing on a programmable computerincluding a processor, a storage medium readable by the processor(including, for example, volatile and non-volatile memory and/or storageelements), at least one input device, and at least one output device.Program code may be applied to input entered using the input device toperform the functions described and to generate output. The output maybe provided to one or more output devices.

Each computer program within the scope of the claims below may beimplemented in any programming language, such as assembly language,machine language, a high-level procedural programming language, or anobject-oriented programming language. The programming language may, forexample, be LISP, PYTHON, PROLOG, PERL, C, C++, C #, JAVA, or anycompiled or interpreted programming language.

Each such computer program may be implemented in a computer programproduct tangibly embodied in a machine-readable storage device forexecution by a computer processor. Method steps of the invention may beperformed by a computer processor executing a program tangibly embodiedon a computer-readable medium to perform functions of the invention byoperating on input and generating output. Suitable processors include,by way of example, both general and special purpose microprocessors.Generally, the processor receives instructions and data from a read-onlymemory and/or a random access memory. Storage devices suitable fortangibly embodying computer program instructions include, for example,all forms of computer-readable devices, firmware, programmable logic,hardware (e.g., integrated circuit chip; electronic devices; acomputer-readable non-volatile storage unit; non-volatile memory, suchas semiconductor memory devices, including EPROM, EEPROM, and flashmemory devices; magnetic disks such as internal hard disks and removabledisks; magneto-optical disks;

and CD-ROMs). Any of the foregoing may be supplemented by, orincorporated in, specially-designed ASICs (application-specificintegrated circuits) or FPGAs (Field-Programmable Gate Arrays). Acomputer can generally also receive programs and data from a storagemedium such as an internal disk (not shown) or a removable disk. Theseelements will also be found in a conventional desktop or workstationcomputer as well as other computers suitable for executing computerprograms implementing the methods described herein, which may be used inconjunction with any digital print engine or marking engine, displaymonitor, or other raster output device capable of producing color orgray scale pixels on paper, film, display screen, or other outputmedium. A computer may also receive programs and data (including, forexample, instructions for storage on non-transitory computer-readablemedia) from a second computer providing access to the programs via anetwork transmission line, wireless transmission media, signalspropagating through space, radio waves, infrared signals, etc.

Referring now to FIGS. 4A, 4B, and 4C, block diagrams depict additionaldetail regarding computing devices that may be modified to executionfunctionality for implementing the methods and systems described above.

Referring now to FIG. 4A, an embodiment of a network environment isdepicted. In brief overview, the network environment comprises one ormore clients 102 a-102 n (also generally referred to as local machine(s)102, client(s) 102, client node(s) 102, client machine(s) 102, clientcomputer(s) 102, client device(s) 102, computing device(s) 102,endpoint(s) 102, or endpoint node(s) 102) in communication with one ormore remote machines 106 a-106 n (also generally referred to asserver(s) 106 or computing device(s) 106) via one or more networks 404.

Although FIG. 4A shows a network 404 between the client(s) 102 and theremote machines 106, the client(s) 102 and the remote machines 106 maybe on the same network 404. The network 404 can be a local area network(LAN), such as a company Intranet, a metropolitan area network (MAN), ora wide area network (WAN), such as the Internet or the World Wide Web.In some embodiments, there are multiple networks 404 between theclient(s) and the remote machines 106. In one of these embodiments, anetwork 404′ (not shown) may be a private network and a network 404 maybe a public network. In another of these embodiments, a network 404 maybe a private network and a network 404′ a public network. In stillanother embodiment, networks 404 and 404′ may both be private networks.In yet another embodiment, networks 404 and 404′ may both be publicnetworks.

The network 404 may be any type and/or form of network and may includeany of the following: a point to point network, a broadcast network, awide area network, a local area network, a telecommunications network, adata communication network, a computer network, an ATM (AsynchronousTransfer Mode) network, a SONET (Synchronous Optical Network) network,an SDH (Synchronous Digital Hierarchy) network, a wireless network, anda wireline network. In some embodiments, the network 404 may comprise awireless link, such as an infrared channel or satellite band. Thetopology of the network 404 may be a bus, star, or ring networktopology. The network 404 may be of any such network topology as knownto those ordinarily skilled in the art capable of supporting theoperations described herein. The network 404 may comprise mobiletelephone networks utilizing any protocol or protocols used tocommunicate among mobile devices (including tables and handheld devicesgenerally), including AMPS, TDMA, CDMA, GSM, GPRS, UMTS, or LTE. In someembodiments, different types of data may be transmitted via differentprotocols. In other embodiments, the same types of data may betransmitted via different protocols.

A client(s) 102 and a remote machine 106 (referred to generally ascomputing devices 400) can be any workstation, desktop computer, laptopor notebook computer, server, portable computer, mobile telephone,mobile smartphone, or other portable telecommunication device, mediaplaying device, a gaming system, mobile computing device, or any othertype and/or form of computing, telecommunications or media device thatis capable of communicating on any type and form of network and that hassufficient processor power and memory capacity to perform the operationsdescribed herein. A client(s) 102 may execute, operate or otherwiseprovide an application, which can be any type and/or form of software,program, or executable instructions, including, without limitation, anytype and/or form of web browser, web-based client, client-serverapplication, an ActiveX control, or a JAVA applet, or any other typeand/or form of executable instructions capable of executing on client(s)102.

In one embodiment, a computing device 106 provides functionality of aweb server. In some embodiments, a web server 106 comprises anopen-source web server, such as the NGINX web servers provided by NGINX,Inc., of San Francisco, Calif., or the APACHE servers maintained by theApache Software Foundation of Delaware. In other embodiments, the webserver executes proprietary software, such as the INTERNET INFORMATIONSERVICES products provided by Microsoft Corporation of Redmond, Wash.,the ORACLE IPLANET web server products provided by Oracle Corporation ofRedwood Shores, Calif., or the BEA WEBLOGIC products provided by BEASystems of Santa Clara, Calif.

In some embodiments, the system may include multiple, logically-groupedremote machines 106. In one of these embodiments, the logical group ofremote machines may be referred to as a server farm 438. In another ofthese embodiments, the server farm 438 may be administered as a singleentity.

FIGS. 4B and 4C depict block diagrams of a computing device 100 usefulfor practicing an embodiment of the client(s) 102 or a remote machine106. As shown in FIGS. 4B and 4C, each computing device 100 includes acentral processing unit 421, and a main memory unit 422. As shown inFIG. 4B, a computing device 400 may include a storage device 428, aninstallation device 416, a network interface 418, an I/O controller 423,display devices 424 a-n, a keyboard 426, a pointing device 427, such asa mouse, and one or more other I/O devices 430 a-n. The storage device428 may include, without limitation, an operating system and software.As shown in FIG. 4C, each computing device 400 may also includeadditional optional elements, such as a memory port 403, a bridge 470,one or more input/output devices 430 a-n (generally referred to usingreference numeral 430), and a cache memory 440 in communication with thecentral processing unit 421.

The central processing unit 421 is any logic circuitry that responds toand processes instructions fetched from the main memory unit 422. Inmany embodiments, the central processing unit 421 is provided by amicroprocessor unit, such as: those manufactured by Intel Corporation ofMountain View, Calif.; those manufactured by Motorola Corporation ofSchaumburg, Ill.; those manufactured by Transmeta Corporation of SantaClara, Calif.; those manufactured by International Business Machines ofWhite Plains, N.Y.; or those manufactured by Advanced Micro Devices ofSunnyvale, Calif. Other examples include SPARC processors, ARMprocessors, processors used to build UNIX/LINUX “white” boxes, andprocessors for mobile devices. The computing device 400 may be based onany of these processors, or any other processor capable of operating asdescribed herein.

Main memory unit 422 may be one or more memory chips capable of storingdata and allowing any storage location to be directly accessed by themicroprocessor 421. The main memory 422 may be based on any availablememory chips capable of operating as described herein. In the embodimentshown in FIG. 4B, the processor 421 communicates with main memory 422via a system bus 450. FIG. 4C depicts an embodiment of a computingdevice 400 in which the processor communicates directly with main memory422 via a memory port 403. FIG. 4C also depicts an embodiment in whichthe main processor 321 communicates directly with cache memory 440 via asecondary bus, sometimes referred to as a backside bus. In otherembodiments, the main processor 421 communicates with cache memory 440using the system bus 450.

In the embodiment shown in FIG. 4B, the processor 421 communicates withvarious I/O devices 430 via a local system bus 450. Various buses may beused to connect the central processing unit 421 to any of the I/Odevices 430, including a VESA VL bus, an ISA bus, an EISA bus, aMicroChannel Architecture (MCA) bus, a PCI bus, a PCI-X bus, aPCI-Express bus, or a NuBus. For embodiments in which the I/O device isa video display 424, the processor 421 may use an Advanced Graphics Port(AGP) to communicate with the display 424. FIG. 4C depicts an embodimentof a computer 400 in which the main processor 421 also communicatesdirectly with an I/O device 430 b via, for example, HYPERTRANSPORT,RAPIDIO, or INFINIBAND communications technology.

One or more of a wide variety of I/O devices 430 a-n may be present inor connected to the computing device 400, each of which may be of thesame or different type and/or form. Input devices include keyboards,mice, trackpads, trackballs, microphones, scanners, cameras, and drawingtablets. Output devices include video displays, speakers, inkjetprinters, laser printers, 3D printers, and dye-sublimation printers. TheI/O devices may be controlled by an I/O controller 423 as shown in FIG.4B. Furthermore, an I/O device may also provide storage and/or aninstallation medium 416 for the computing device 400. In someembodiments, the computing device 400 may provide USB connections (notshown) to receive handheld USB storage devices such as the USB FlashDrive line of devices manufactured by Twintech Industry, Inc. of LosAlamitos, Calif.

Referring still to FIG. 4B, the computing device 400 may support anysuitable installation device 416, such as a floppy disk drive forreceiving floppy disks such as 3.5-inch, 5.25-inch disks or ZIP disks; aCD-ROM drive; a CD-R/RW drive; a DVD-ROM drive; tape drives of variousformats; a USB device; a hard-drive or any other device suitable forinstalling software and programs. In some embodiments, the computingdevice 400 may provide functionality for installing software over anetwork 404. The computing device 400 may further comprise a storagedevice, such as one or more hard disk drives or redundant arrays ofindependent disks, for storing an operating system and other software.Alternatively, the computing device 400 may rely on memory chips forstorage instead of hard disks.

Furthermore, the computing device 400 may include a network interface418 to interface to the network 404 through a variety of connectionsincluding, but not limited to, standard telephone lines, LAN or WANlinks (e.g., 802.11, Ti, T3, 56 kb, X.25, SNA, DECNET), broadbandconnections (e.g., ISDN, Frame Relay, ATM, Gigabit Ethernet,Ethernet-over-SONET), wireless connections, or some combination of anyor all of the above. Connections can be established using a variety ofcommunication protocols (e.g., TCP/IP, IPX, SPX, NetBIOS, Ethernet,ARCNET, SONET, SDH, Fiber Distributed Data Interface (FDDI), RS232, IEEE802.11, IEEE 802.11a, IEEE 802.11b, IEEE 802.11g, IEEE 802.11n,802.15.4, Bluetooth, ZIGBEE, CDMA, GSM, WiMax, and direct asynchronousconnections). In one embodiment, the computing device 400 communicateswith other computing devices 400′ via any type and/or form of gateway ortunneling protocol such as Secure Socket Layer (SSL) or Transport LayerSecurity (TLS). The network interface 418 may comprise a built-innetwork adapter, network interface card, PCMCIA network card, card busnetwork adapter, wireless network adapter, USB network adapter, modem,or any other device suitable for interfacing the computing device 100 toany type of network capable of communication and performing theoperations described herein.

In further embodiments, an I/O device 430 may be a bridge between thesystem bus 150 and an external communication bus, such as a USB bus, anApple Desktop Bus, an RS-232 serial connection, a SCSI bus, a FireWirebus, a FireWire 800 bus, an Ethernet bus, an AppleTalk bus, a GigabitEthernet bus, an Asynchronous Transfer Mode bus, a HIPPI bus, a SuperHIPPI bus, a SerialPlus bus, a SCI/LAMP bus, a FibreChannel bus, or aSerial Attached small computer system interface bus.

A computing device 400 of the sort depicted in FIGS. 4B and 4C typicallyoperates under the control of operating systems, which controlscheduling of tasks and access to system resources. The computing device400 can be running any operating system such as any of the versions ofthe MICROSOFT WINDOWS operating systems, the different releases of theUNIX and LINUX operating systems, any version of the MAC OS forMacintosh computers, any embedded operating system, any real-timeoperating system, any open source operating system, any proprietaryoperating system, any operating systems for mobile computing devices, orany other operating system capable of running on the computing deviceand performing the operations described herein. Typical operatingsystems include, but are not limited to: WINDOWS 3.x, WINDOWS 95,WINDOWS 98, WINDOWS 2000, WINDOWS NT 3.1-4.0, WINDOWS CE, WINDOWS XP,WINDOWS 7, WINDOWS 8, WINDOWS VISTA, and WINDOWS 10, all of which aremanufactured by Microsoft Corporation of Redmond, Wash.; any version ofMAC OS manufactured by Apple Inc. of Cupertino, Calif.; OS/2manufactured by International Business Machines of Armonk, N.Y.; Red HatEnterprise Linux, a Linus-variant operating system distributed by RedHat, Inc., of Raleigh, N.C.; Ubuntu, a freely-available operating systemdistributed by Canonical Ltd. of London, England; or any type and/orform of a Unix operating system, among others.

The computing device 400 can be any workstation, desktop computer,laptop or notebook computer, server, portable computer, mobile telephoneor other portable telecommunication device, media playing device, agaming system, mobile computing device, or any other type and/or form ofcomputing, telecommunications or media device that is capable ofcommunication and that has sufficient processor power and memorycapacity to perform the operations described herein. In someembodiments, the computing device 100 may have different processors,operating systems, and input devices consistent with the device. Inother embodiments, the computing device 400 is a mobile device, such asa JAVA-enabled cellular telephone/smartphone or personal digitalassistant (PDA). The computing device 400 may be a mobile device such asthose manufactured, by way of example and without limitation, by AppleInc. of Cupertino, Calif.; Google/Motorola Div. of Ft. Worth, Tex.;Kyocera of Kyoto, Japan; Samsung Electronics Co., Ltd. of Seoul, Korea;Nokia of Finland; Hewlett-Packard Development Company, L.P. and/or Palm,Inc. of Sunnyvale, Calif.; Sony Ericsson Mobile Communications AB ofLund, Sweden; or Research In Motion Limited of Waterloo, Ontario,Canada. In yet other embodiments, the computing device 100 is asmartphone, POCKET PC, POCKET PC PHONE, or other portable mobile devicesupporting Microsoft Windows Mobile Software.

In some embodiments, the computing device 400 is a digital audio player.In one of these embodiments, the computing device 400 is a digital audioplayer such as the Apple IPOD, IPOD TOUCH, IPOD NANO, and IPOD SHUFFLElines of devices manufactured by Apple Inc. In another of theseembodiments, the digital audio player may function as both a portablemedia player and as a mass storage device. In other embodiments, thecomputing device 100 is a digital audio player such as thosemanufactured by, for example, and without limitation, SamsungElectronics America of Ridgefield Park, N.J., or Creative TechnologiesLtd. of Singapore. In yet other embodiments, the computing device 400 isa portable media player or digital audio player supporting file formatsincluding, but not limited to, MP3, WAV, M4A/AAC, WMA Protected AAC,AEFF, Audible audiobook, Apple Lossless audio file formats, and .mov,.m4v, and .mp4 MPEG-4 (H.264/MPEG-4 AVC) video file formats.

In some embodiments, the computing device 400 comprises a combination ofdevices, such as a mobile phone combined with a digital audio player orportable media player. In one of these embodiments, the computing device100 is a device in the Google/Motorola line of combination digital audioplayers and mobile phones. In another of these embodiments, thecomputing device 400 is a device in the IPHONE smartphone line ofdevices manufactured by Apple Inc. In still another of theseembodiments, the computing device 400 is a device executing the ANDROIDopen source mobile phone platform distributed by the Open HandsetAlliance; for example, the device 100 may be a device such as thoseprovided by Samsung Electronics of Seoul, Korea, or HTC Headquarters ofTaiwan, R.O.C. In other embodiments, the computing device 400 is atablet device such as, for example and without limitation, the IPAD lineof devices manufactured by Apple Inc.; the PLAYBOOK manufactured byResearch In Motion; the CRUZ line of devices manufactured by VelocityMicro, Inc. of Richmond, Va.; the FOLIO and THRIVE line of devicesmanufactured by Toshiba America Information Systems, Inc. of Irvine,Calif.; the GALAXY line of devices manufactured by Samsung; the HP SLATEline of devices manufactured by Hewlett-Packard; and the STREAK line ofdevices manufactured by Dell, Inc. of Round Rock, Tex.

Having described certain embodiments of methods and systems forimproving designs of electronic mail message templates, it will nowbecome apparent to one of skill in the art that other embodimentsincorporating the concepts of the disclosure may be used. Therefore, thedisclosure should not be limited to certain embodiments, but rathershould be limited only by the spirit and scope of the following claims.

What is claimed is:
 1. A method for monitoring for and identifyingvariations in user interface designs and making recommendations forimproving designs of electronic message templates based on identifiedvariations, the method comprising: importing, by a capture engineexecuting on a first computing device, an email template into an emailclient; rendering, by the capture engine, the email template in theemail client; generating, by the capture engine, a screen shot of aportion of the rendered email template; comparing, by a comparisonengine executed by the first computing device, the generated screen shotwith an archived screen shot of the rendered portion; determining, bythe comparison engine, that a first level of variation between thegenerated screen shot and the archived screen shot exceeds a firstthreshold level of variation; transmitting, by an alert engine executedby the first computing device, to a second computing device, anotification of the first level of variation and a recommendation tomodify the email template to minimize the first level of variation;replacing, by the comparison engine, the archived screen shot of therendered portion with the generated screen shot; subsequent to replacingthe archived screen shot with the generated screen shot, comparing, bythe comparison engine, the replacement screen shot with a subsequentlygenerated screen shot of the rendered portion of the email templaterendered by the email client; determining, by the comparison engine,that a second level of variation between the replacement screen shot andthe subsequently generated screen shot exceeds the first threshold levelof variation; transmitting, by the alert engine, to the second computingdevice, a second notification of the second level of variation and asecond recommendation to modify the email template to minimize thesecond level of variation; and replacing, by the comparison engine, thereplacement screen shot with the subsequently generated screen shot.